package com.ruoyi.business.mapper;

import java.util.Date;
import java.util.List;

import com.ruoyi.business.domain.Content;
import com.ruoyi.business.domain.Depart;
import com.ruoyi.business.domain.Statistics;
import com.ruoyi.business.domain.StatisticsVO;
import org.apache.ibatis.annotations.Param;

/**
 * StatisticsMapper接口
 *
 * @author win
 * @date 2021-06-24
 */
public interface StatisticsMapper
{
    /**
     * 查询Statistics
     *
     * @param id StatisticsID
     * @return Statistics
     */
    public List<StatisticsVO> selectStatisticsById(Long id);

    /**
     * 查询Statistics列表
     *
     * @param statistics Statistics
     * @return Statistics集合
     */
    public List<Content> selectStatisticsList(Statistics statistics);

    /**
     * 新增Statistics
     *
     * @param statistics Statistics
     * @return 结果
     */
    public int insertStatistics(Statistics statistics);

    /**
     * 修改Statistics
     *
     * @param statistics Statistics
     * @return 结果
     */
    public int updateStatistics(Statistics statistics);

    /**
     * 删除Statistics
     *
     * @param id StatisticsID
     * @return 结果
     */
    public int deleteStatisticsById(Long id);

    /**
     * 批量删除Statistics
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStatisticsByIds(Long[] ids);

    /**
     * 查找今天某用户是否查看了某个内容
     * @param contentId
     * @param clientIp
     * @param todayStartTime
     * @param todayEndTime
     * @return
     */
    int hasTodayStatistics(@Param("contentId") Long contentId,
                           @Param("clientIp") String clientIp,
                           @Param("todayStartTime") Date todayStartTime,
                           @Param("todayEndTime") Date todayEndTime);

    /**
     * 统计部门信息
     * @param depart
     * @return
     */
    Depart selectDepartStatistics(Depart depart);

    /**
     * 查询部门发布文章的信息
     * @return
     */
    List<Depart> selectDepartPublish();

    /**
     * 统计文章点击排行
     * @param limit
     * @param belong
     * @return
     */
    List<Depart> selectStatisticsWithLimit(@Param(value = "limit") Integer limit,
                                            @Param(value = "belong") Integer belong);

    /**
     * 统计文章点击排行
     * @param limit
     * @return
     */
    List<Content> selectContentStatisticsWithLimit(@Param(value = "limit") Integer limit);

    /**
     * 统计文章点击排行
     * @return
     */
    List<Content> selectContentStatisticsWithPage();

    /**
     * 获取文章阅读数
     * @param contentId
     * @return
     */
    Integer countVisitByContentId(Long contentId);

    /**
     * 获取部门发布的所有内容
     * @param departId
     * @return
     */
    List<Content> selectContentIdsByDepartId(Long departId);

    /**
     * 查询导出数据
     * @param statistics
     * @return
     */
    List<StatisticsVO> exportStatistics(Statistics statistics);
}
